package com.gy.controller.assistant.extractor;

import dev.langchain4j.service.MemoryId;
import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.UserMessage;
import dev.langchain4j.service.spring.AiService;
import dev.langchain4j.service.spring.AiServiceWiringMode;

@AiService(
        wiringMode = AiServiceWiringMode.EXPLICIT,
        chatModel = "nonStreamingChatModel", // 使用非流式模型
        chatMemoryProvider = "chatMemoryProvider"
)
public interface XiaoNingExtractor {

    @SystemMessage(fromResource = "xiaoning-prompt-temple.txt")
    String extractStudentAwardFields(
            @MemoryId String memoryId,
            @UserMessage String ocrText
    );

    @SystemMessage(fromResource = "xiaoning-prompt-temple.txt")
    String extractPapersFields(
            @MemoryId String memoryId,
            @UserMessage String ocrText // 传入论文OCR文本（封面+检索报告等）
    );

    @SystemMessage(fromResource = "xiaoning-prompt-temple.txt")
    String extractPersonalAwardFields(
            @MemoryId String memoryId,
            @UserMessage String ocrText // 传入个人获奖证书的OCR文本
    );

    @SystemMessage(fromResource = "xiaoning-prompt-temple.txt")
    String extractHorizontalFields(
            @MemoryId String memoryId,
            @UserMessage String ocrText // 传入横向课题PDF的OCR文本（合同/证明）
    );

    @SystemMessage(fromResource = "xiaoning-prompt-temple.txt")
    String extractLongitudinalFields(
            @MemoryId String memoryId,
            @UserMessage String ocrText // 传入纵向课题PDF的OCR文本（申报书/立项证明）
    );

    // 6. 新增：专利
    @SystemMessage(fromResource = "xiaoning-prompt-temple.txt")
    String extractPatentsFields(
            @MemoryId String memoryId,
            @UserMessage String ocrText // 传入专利PDF的OCR文本（证书封面/申请文件首页）
    );

    @SystemMessage(fromResource = "xiaoning-prompt-temple.txt")
    String extractCopyRightFields(
            @MemoryId String memoryId,
            @UserMessage String ocrText // 传入软件著作权PDF的OCR文本（证书封面/核心页）
    );

    // 8. 新增：著作
    @SystemMessage(fromResource = "xiaoning-prompt-temple.txt")
    String extractPublicationFields(
            @MemoryId String memoryId,
            @UserMessage String ocrText // 传入著作PDF的OCR文本（封面+版权页）
    );

    // 9. 新增：继续教育材料
    @SystemMessage(fromResource = "xiaoning-prompt-temple.txt")
    String extractContinueEducationMaterialFields(
            @MemoryId String memoryId,
            @UserMessage String ocrText // 传入继续教育材料PDF的OCR文本（证书封面/核心页）
    );
    @SystemMessage(fromResource = "xiaoning-prompt-temple.txt")
    String extractCertificationFields(
            @MemoryId String memoryId,
            @UserMessage String ocrText // 传入档案资料PDF的OCR文本（证书封面/核心页）
    );
}
